#ifndef NV_GAMESTATE_H
#define NV_GAMESTATE_H

#include "Headers.h"
#include "StateManager.h"

class GameState
{
	friend class StateManager;
protected:
	GameState(sf::RenderWindow &windowIn, StateManager& stateManagerIn);
	virtual ~GameState(){ }

	sf::RenderWindow& window;
	StateManager& stateManager;

public:
	virtual void init() = 0;
	virtual void exit() = 0;

	virtual void pause() = 0;
	virtual void resume() = 0;

	virtual void getInput(sf::RenderWindow &window) = 0;
	virtual void update(StateManager& stateManager) = 0;
	virtual void draw(sf::RenderWindow &window) = 0;
};

#endif